7766d5
@@ -113,6 +113,7 @@
 
   private volatile long lastAccessTime;
   private volatile long lastIdleTime;
+  private volatile int pendingCount = 0;
 
 
   public HiveSessionImpl(SessionHandle sessionHandle, TProtocolVersion protocol, String username, String password,
@@ -336,6 +337,8 @@
protected synchronized void acquire(boolean userAccess) {
     // set the thread name with the logging prefix.
     sessionState.updateThreadName();
     Hive.set(sessionHive);
+    pendingCount++;
+    lastIdleTime = 0;
   }
 
   /**
@@ -361,10 +364,11 @@
protected synchronized void release(boolean userAccess) {
     if (userAccess) {
       lastAccessTime = System.currentTimeMillis();
     }
-    if (opHandleSet.isEmpty()) {
+    pendingCount--;
+    // lastIdleTime is only set by the last one
+    // who calls release with empty opHandleSet.
+    if (pendingCount == 0 && opHandleSet.isEmpty()) {
       lastIdleTime = System.currentTimeMillis();
-    } else {
-      lastIdleTime = 0;
     }
   }
 
